using UnityEngine;
using System.Collections;
using Unity.Jobs;

namespace Obi
{
    public interface IColliderWorldImpl
    {
        int referenceCount { get; }

        void UpdateWorld(float deltaTime);

        void SetColliders(ObiNativeColliderShapeList shapes, ObiNativeAabbList bounds, ObiNativeAffineTransformList transforms);
        void SetForceZones(ObiNativeForceZoneList forceZones);
        void SetRigidbodies(ObiNativeRigidbodyList rigidbody);

        void SetCollisionMaterials(ObiNativeCollisionMaterialList materials);

        void SetTriangleMeshData(ObiNativeTriangleMeshHeaderList headers, ObiNativeBIHNodeList nodes, ObiNativeTriangleList triangles, ObiNativeVector3List vertices);
        void SetEdgeMeshData(ObiNativeEdgeMeshHeaderList headers, ObiNativeBIHNodeList nodes, ObiNativeEdgeList triangles, ObiNativeVector2List vertices);
        void SetDistanceFieldData(ObiNativeDistanceFieldHeaderList headers, ObiNativeDFNodeList nodes);
        void SetHeightFieldData(ObiNativeHeightFieldHeaderList headers, ObiNativeFloatList samples);
    }
}
